const express = require('express');
const cors = require('cors');
const axios = require('axios');
const QRCode = require('qrcode');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3001;

// 中间件
app.use(cors());
app.use(express.json());
app.use(express.static('public'));

// 路由
app.get('/', (req, res) => {
    res.json({
        message: '影流播后端服务已启动',
        version: '1.0.0',
        endpoints: {
            health: '/health',
            baidu: '/api/baidu',
            ali: '/api/ali',
            xunlei: '/api/xunlei',
            qr: '/api/qr'
        }
    });
});

// 健康检查
app.get('/health', (req, res) => {
    res.json({ status: 'ok', timestamp: new Date().toISOString() });
});

// 百度网盘解析
app.post('/api/baidu', async (req, res) => {
    try {
        const { shareUrl } = req.body;
        // 这里实现百度网盘分享链接解析逻辑
        res.json({
            success: true,
            data: {
                url: shareUrl,
                title: '百度网盘资源',
                downloadUrl: '解析后的下载链接',
                quality: ['720P', '1080P', '4K']
            }
        });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
});

// 阿里云盘解析
app.post('/api/ali', async (req, res) => {
    try {
        const { shareUrl } = req.body;
        // 这里实现阿里云盘分享链接解析逻辑
        res.json({
            success: true,
            data: {
                url: shareUrl,
                title: '阿里云盘资源',
                downloadUrl: '解析后的下载链接',
                quality: ['720P', '1080P', '4K']
            }
        });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
});

// 迅雷网盘解析
app.post('/api/xunlei', async (req, res) => {
    try {
        const { shareUrl } = req.body;
        // 这里实现迅雷网盘分享链接解析逻辑
        res.json({
            success: true,
            data: {
                url: shareUrl,
                title: '迅雷网盘资源',
                downloadUrl: '解析后的下载链接',
                quality: ['720P', '1080P', '4K']
            }
        });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
});

// 生成二维码
app.get('/api/qr', async (req, res) => {
    try {
        const { text } = req.query;
        if (!text) {
            return res.status(400).json({ error: '请提供text参数' });
        }
        
        const qrCode = await QRCode.toDataURL(text);
        res.json({ success: true, qrCode });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
});

// 通用视频解析
app.post('/api/parse', async (req, res) => {
    try {
        const { url } = req.body;
        
        // 这里实现通用视频URL解析逻辑
        // 支持YouTube、Bilibili、腾讯视频等各种平台
        
        res.json({
            success: true,
            data: {
                url: url,
                title: '解析后的视频标题',
                downloadUrl: '解析后的下载链接',
                quality: ['360P', '480P', '720P', '1080P', '4K'],
                formats: ['mp4', 'webm', 'flv']
            }
        });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
});

// 本地文件浏览
app.get('/api/local', (req, res) => {
    res.json({
        success: true,
        data: {
            drives: ['C:', 'D:', 'E:', 'F:'],
            devices: [
                { name: 'USB Drive', path: '/media/usb', type: 'usb' },
                { name: 'SD Card', path: '/media/sd', type: 'sd' }
            ]
        }
    });
});

// 错误处理
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).json({ 
        success: false, 
        error: '服务器内部错误',
        message: err.message 
    });
});

// 404处理
app.use((req, res) => {
    res.status(404).json({ 
        success: false, 
        error: '接口不存在' 
    });
});

app.listen(PORT, () => {
    console.log(`🚀 影流播后端服务启动成功`);
    console.log(`📡 服务地址: http://localhost:${PORT}`);
    console.log(`📖 API文档: http://localhost:${PORT}`);
});
